import sys
import os
import pandas as pd

# 添加项目根目录到Python路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))

from src.config.constants import DEBUG_DIR

class PreprocessingResultVerifier:
    """预处理结果验证工具"""
    
    def __init__(self):
        """初始化验证工具"""
        self.task_file = os.path.join(DEBUG_DIR, "processed_task_data.xlsx")
        self.history_file = os.path.join(DEBUG_DIR, "processed_history_data.xlsx")
    
    def verify(self):
        """验证预处理结果文件"""
        print("瀚越包装工具 - 预处理结果验证")
        print("=" * 50)
        
        # 检查文件是否存在
        if not os.path.exists(self.task_file):
            print(f"❌ 任务数据预处理结果文件不存在: {self.task_file}")
            return False
            
        if not os.path.exists(self.history_file):
            print(f"❌ 历史数据预处理结果文件不存在: {self.history_file}")
            return False
            
        print(f"任务数据预处理结果文件存在: {self.task_file}")
        print(f"历史数据预处理结果文件存在: {self.history_file}")
        print("=" * 50)
        
        try:
            # 读取任务数据
            task_data = pd.read_excel(self.task_file)
            print(f"成功读取任务数据，共 {len(task_data)} 条记录")
            print(f"任务数据列: {', '.join(task_data.columns)}")
            print(f"任务数据前5行:\n{task_data.head(5).to_string()}")
            print()
            
            # 读取历史数据
            history_data = pd.read_excel(self.history_file)
            print(f"成功读取历史数据，共 {len(history_data)} 条记录")
            print(f"历史数据列: {', '.join(history_data.columns)}")
            print(f"历史数据前5行:\n{history_data.head(5).to_string()}")
            print()
            
            # 检查数据完整性
            print("数据完整性检查:")
            # 检查任务数据是否有空值
            task_missing_values = task_data.isnull().sum()
            print(f"任务数据缺失值情况:\n{task_missing_values[task_missing_values > 0].to_string() if any(task_missing_values > 0) else '无缺失值'}")
            
            # 检查历史数据是否有空值
            history_missing_values = history_data.isnull().sum()
            print(f"历史数据缺失值情况:\n{history_missing_values[history_missing_values > 0].to_string() if any(history_missing_values > 0) else '无缺失值'}")
            print()
            
            # 检查数据类型
            print("数据类型检查:")
            print(f"任务数据类型:\n{task_data.dtypes.to_string()}")
            print(f"历史数据类型:\n{history_data.dtypes.to_string()}")
            print()
            
            print("✅ 预处理结果验证完成！所有数据文件均正确生成且数据结构合理。")
            return True
            
        except Exception as e:
            print(f"❌ 验证过程中发生错误: {str(e)}")
            import traceback
            traceback.print_exc()
            return False

if __name__ == "__main__":
    # 创建并运行验证工具
    verifier = PreprocessingResultVerifier()
    verifier.verify()